package cn.cj.erp.common.enums;

import com.fasterxml.jackson.annotation.JsonValue;

/**
 * 单据类型枚举
 *
 * @author chenjian
 */
public enum OrderTypeEnum implements BaseEnum {
    /** 销售订单 */
    SALE_ORDER("saleOrder", "销售订单"),
    /** 销售单 */
    SALE("sale", "销售单"),
    /** * 销售退货单 */
    SALE_REFUND("saleRefund", "销售退货单"),
    /** 进货订单 */
    PURCHASE_ORDER("purchaseOrder", "进货订单"),
    /** 进货单 */
    PURCHASE("purchase", "进货单"),
    /** * 进货退货单 */
    PURCHASE_REFUND("purchaseRefund", "进货退货单"),
    /** 库存盘点单 */
    STOCK_TAKE("stockTake", "盘点单"),
    /** 组装拆卸单 */
    JOIN_SPLIT("joinSplit", "组装拆卸单"),
    /** 调拨单 */
    ALLOCATE("allocate", "调拨单"),
    /** 借入单 */
    BORROW_IN("borrowIn", "借入单"),
    /** 借入归还单 */
    BORROW_IN_BACK("borrowInBack", "借入归还单"),
    /** 借出单 */
    BORROW_OUT("borrowOut", "借出单"),
    /** 借出归还单 */
    BORROW_OUT_BACK("borrowOutBack", "借出归还单"),
    /** 待入库单 */
    WAREHOUSE_WAIT_IN("warehouseWaitIn", "待入库单"),
    /** 入库单 */
    WAREHOUSE_IN("warehouseIn", "入库单"),
    /** 待出库单 */
    WAREHOUSE_WAIT_OUT("warehouseWaitOut", "待出库单"),
    /** 出库单 */
    WAREHOUSE_OUT("warehouseOut", "出库单"),
    /** 转账 */
    TRANSFER("transfer", "账户转账"),
    /** 转账-转出 */
    TRANSFER_OUT("transferOut", "转账-转出"),
    /** 转账-转入 */
    TRANSFER_IN("transferIn", "转账-转入"),
    /** 日常收入 */
    INCOME("income", "日常收入"),
    /** 日常支出 */
    OUTCOME("outcome", "日常支出"),
    /** * 付款单-支付欠款 */
    RECEIVABLES("receivables", "付款单"),
    /** 收款单-收回欠款 */
    PAYABLES("payables", "收款单"),
    /** 调拨其他费用 */
    ALLOCATE_OTHER_AMOUNT("allocateOtherAmount", "调拨其他费用"),
    /** 出库运费 */
    WAREHOUSE_OUT_DELIVERY_AMOUNT("warehouseOutDeliveryAmount", "出库运费"),
    /** 入库到付运费 */
    WAREHOUSE_IN_DELIVERY_AMOUNT("warehouseInDeliveryAmount", "入库到付运费"),
    /** * 初期余额 */
    INITIAL_BALANCE("initialBalance", "初期余额"),
    ;

    @JsonValue
    private final String value;
    private final String label;

    OrderTypeEnum(String value, String info) {
        this.value = value;
        this.label = info;
    }

    @Override
    public String getValue() {
        return value;
    }

    @Override
    public String getLabel() {
        return label;
    }
}
